import { Toast } from "react-vant";
import { getPayData } from "../api";
import { baseUrl } from "./request";

// 复制粘贴 
export function copy(text: string) {
    const input = document.createElement('input');
    input.value = text;
    document.body.appendChild(input);
    input.select();
    document.execCommand('copy');
    document.body.removeChild(input);
}

const wechatAuthorization = (url: string) => {
    return `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3c9fc535e19dbeb2&redirect_uri=${encodeURIComponent(url)}&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect`
}

// 图片上传逻辑
export const upload = async (file: File) => {
  try {
    const body = new FormData()
    body.append('files', file)
    const resp = await fetch(baseUrl + "/upload", {
      headers: {
        "authorization": `Bearer ${sessionStorage.getItem('token')}`,
      },
      method: 'POST',
      body,
    })
    const res = await resp.json()
    
    // return包含 url 的一个对象 例如: {url:'https://img.yzcdn.cn/vant/sand.jpg'}
    let urls = res.data.map((item: any) => {
        return {
            url: item.imageUrl
        }
    })
    return urls[0]   //todo: 只返回第一个
  } catch (error) {
    return { url: `${file.name}` }
  }
}

// 发起微信支付
interface optionsProps {
  orderType: string,
  pullkey?: string,
  vKey?: string
}

export const wxPay = async (options:optionsProps, successCb?:any) => {

  let { orderType, pullkey, vKey } = options

  let { data } = await getPayData({ orderType, pullkey, vKey })

  if (data.status == 200) {
      // @ts-ignore
      wx.chooseWXPay({
          timestamp: data.timeStamp, // 支付签名时间戳，注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符
          nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
          package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
          signType: 'RSA', // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致
          paySign: data.paySign, // 支付签名
          complete: (res: any) => {
              if (res.errMsg === 'chooseWXPay:ok') {
                  // 支付成功后的回调函数
                  Toast.success('支付成功')
                  successCb && successCb()
                  // getNoteService({sex})
              } else {
                  Toast.fail('支付失败')
              }
          }
      });
  }
}